package util

import (
	"fmt"
	"gg_server/response"
	"mime/multipart"
	"net/url"
	"path"
	"time"
)

// 上传文件  的地址 不管是什么文件  统一 路径 进行处理

type uploadStruct struct{}

var Upload *uploadStruct

func init() {
	Upload = &uploadStruct{}
}

// 获取 图片保存的地址 图片储存后的url
func (u *uploadStruct) GetUploadDst(p string, file *multipart.FileHeader, check checkFile) (dst string, src string) {

	// 判断 文件类型是否符合
	if !check.Check(file) {
		// 文件类型不符合
		response.GetError().ParameterError("文件类型不符合")
	}

	// 获取时间戳
	t := fmt.Sprint(time.Now().Unix())

	fileName := t + file.Filename

	// 处理文件的地址
	dst = path.Join("./upload", p, fileName)

	src, _ = url.JoinPath("/upload", p, fileName)

	return
}

// 检查文件的类型
type checkFile interface {
	Check(*multipart.FileHeader) bool
}

var CheckImg checkImg

func init() {
	CheckImg = checkImg{}
}

// 检查判断是否为图片类型
type checkImg struct{}

func (c *checkImg) Check(file *multipart.FileHeader) bool {

	fileType := file.Header.Get("Content-Type")
	return fileType == "image/png" || fileType == "image/jpeg"
}
